<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<!-- 点击按钮弹出警告框 -->
		<input type="button" value="点击" onclick="fun4()" />
	</body>
	<script>
		
		//函数表达式:把函数当作一个值赋给变量。
		//注意：函数表达式必须先声明在调用。
		let f1 =function fun(){
			console.log('hello');
		}
		//函数调用：变量名（）调用。
		f1();
		console.log('----------');
		let f2= function fun1(name){
			console.log('hello'+name);
		}
		f2('word');
		console.log('----------');
		//匿名函数:函数没名字
		let f3 =function (a,b){
			return a<b?a:b;
			
		}
		console.log(f3(2,7));
		//立即执行函数：匿名函数自调用。用（）括起来的部分是一个整体。
		(function (c,d){
			console.log(c+d);
		})
		(2,6);
		console.log('----------');
		function fun4(){
			alert("你别点我");
		}
		
		let a=function(){
			console.log(1);
		}
		console.log(typeof a);
		console.log('----------');//函数的数据类型：属于object,和数组一样。
		//把函数这个值作为实参传个另一个函数
		//回调函数：把函数a当作参数传给函数b,在函数b中调用函数a,此时函数a叫做回调函数。
		let my=function(a){
			let b=123,res=a();
			a();//my1()
		}
		let my1=function(){
			console.log('my1');
		}
		my(my1);
		console.log('----------');
		//返回值
		function test(){}
		function test2(){
			return 0;
		}
		console.log(test());
		console.log(test2());
		//递归函数：在函数中调用自己。
		//阶乘：10！=10*9*8*7*6...*1
		let jc=function(n){
			if (n===1) {return 1;
				
			} else{
				return n*jc(n-1);
				
			}
		}
		console.log(jc(10));
		
	</script>
</html>
